using System;
using System.Collections.Generic;
using System.Text;
using Entidades;
using DataAccessArquitectura;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

/*
 * Nombre archivo: salariosBuilder.cs 
 *
 * Descripcion: Manipulacion de la tabla salarios, con los metodos de consulta, grabado, actulaizacion
 * y recuperacion de un registro
 *
 * Autor: PLUS-EW
 * Fecha:  22/02/2012 10:19:28
 *
 * Historial
 * ---------------------------------------------------------
 * Autor            Fecha               Modificación
 *
 */

namespace Reglas_Negocio
{
	public class salariosBuilder
	{
		private const enmTipoBaseDatos mTipoBD = enmTipoBaseDatos.MySQL;

		#region < METODOS PUBLICOS CONSULTA >
		public static DataTable ListarTodos()
		{
			try
			{
				return ListarTodos("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static DataTable ListarTodos(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("*", "salarios", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static bool Existe(string filtro)
		{
			int numero = 0;
			bool r = false;
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				numero = Convert.ToInt32(bd.EjecutarSelectScalar("COUNT(*)", "salarios", filtro));
				r = (numero > 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS GRABADO >
		public static bool GrabarViaProcedimiento(salarios datos)
		{
			int numero = 0;
			bool r = false;
			string filtro = "";
			try
			{
				string strConectionInsert = "INSERT INTO salarios (id_empleado_fk,valor_salario,valor_por_salario,nro_horas_mes,incluye_minutos,fecha_registro_salario,estado_salario,id_dat_glob_fk,nro_horas_mes_calcula) VALUES (?id_empleado_fk,?valor_salario,?valor_por_salario,?nro_horas_mes,?incluye_minutos,?fecha_registro_salario,?estado_salario,?id_dat_glob_fk,?nro_horas_mes_calcula);";
				string strConectionUpdate = "UPDATE salarios SET id_empleado_fk = ?id_empleado_fk,valor_salario = ?valor_salario,valor_por_salario = ?valor_por_salario,nro_horas_mes = ?nro_horas_mes,incluye_minutos = ?incluye_minutos,fecha_registro_salario = ?fecha_registro_salario,estado_salario = ?estado_salario,id_dat_glob_fk = ?id_dat_glob_fk,nro_horas_mes_calcula = ?nro_horas_mes_calcula WHERE id_salario=?id_salario;";

				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				MySqlParameter psqlId_salario = new MySqlParameter("?id_salario", MySqlDbType.Int32);
				MySqlParameter psqlId_empleado_fk = new MySqlParameter("?id_empleado_fk", MySqlDbType.Int32);
				MySqlParameter psqlValor_salario = new MySqlParameter("?valor_salario", MySqlDbType.Decimal,10);
				MySqlParameter psqlValor_por_salario = new MySqlParameter("?valor_por_salario", MySqlDbType.Decimal,10);
				MySqlParameter psqlNro_horas_mes = new MySqlParameter("?nro_horas_mes", MySqlDbType.Int32);
				MySqlParameter psqlIncluye_minutos = new MySqlParameter("?incluye_minutos", MySqlDbType.VarChar,5);
				MySqlParameter psqlFecha_registro_salario = new MySqlParameter("?fecha_registro_salario", MySqlDbType.Datetime);
				MySqlParameter psqlEstado_salario = new MySqlParameter("?estado_salario", MySqlDbType.VarChar,20);
				MySqlParameter psqlId_dat_glob_fk = new MySqlParameter("?id_dat_glob_fk", MySqlDbType.Int32);
				MySqlParameter psqlNro_horas_mes_calcula = new MySqlParameter("?nro_horas_mes_calcula", MySqlDbType.Int32);

				psqlId_salario.Value = datos.Id_salario;
				psqlId_empleado_fk.Value = datos.Id_empleado_fk;
				psqlValor_salario.Value = datos.Valor_salario;
				psqlValor_por_salario.Value = datos.Valor_por_salario;
				psqlNro_horas_mes.Value = datos.Nro_horas_mes;
				psqlIncluye_minutos.Value = datos.Incluye_minutos;
				psqlFecha_registro_salario.Value = datos.Fecha_registro_salario;
				psqlEstado_salario.Value = datos.Estado_salario;
				psqlId_dat_glob_fk.Value = datos.Id_dat_glob_fk;
				psqlNro_horas_mes_calcula.Value = datos.Nro_horas_mes_calcula;

				filtro = string.Format("id_salario='{0}'", datos.Id_salario);
				if (!Existe(filtro))
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionInsert
							, psqlId_salario
							, psqlId_empleado_fk
							, psqlValor_salario
							, psqlValor_por_salario
							, psqlNro_horas_mes
							, psqlIncluye_minutos
							, psqlFecha_registro_salario
							, psqlEstado_salario
							, psqlId_dat_glob_fk
							, psqlNro_horas_mes_calcula
							);
					MessageBox.Show("Se grabo [salarios] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionUpdate
							, psqlId_salario
							, psqlId_empleado_fk
							, psqlValor_salario
							, psqlValor_por_salario
							, psqlNro_horas_mes
							, psqlIncluye_minutos
							, psqlFecha_registro_salario
							, psqlEstado_salario
							, psqlId_dat_glob_fk
							, psqlNro_horas_mes_calcula
							);
					MessageBox.Show("Se actualizó [salarios] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				r = (numero < 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static void GrabarViaSql(salarios datos)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				string filtro = string.Format("id_salario='{0}'", datos.Id_salario);
				if (!Existe(filtro))
				{
					bd.EjecutarInsert("salarios"
						, new CampoValor("id_empleado_fk", datos.Id_empleado_fk.ToString())
						, new CampoValor("valor_salario", datos.Valor_salario.ToString())
						, new CampoValor("valor_por_salario", datos.Valor_por_salario.ToString())
						, new CampoValor("nro_horas_mes", datos.Nro_horas_mes.ToString())
						, new CampoValor("incluye_minutos", datos.Incluye_minutos)
						, new CampoValor("fecha_registro_salario",ValidarBuilder.FormatoFecha( datos.Fecha_registro_salario))
						, new CampoValor("estado_salario", datos.Estado_salario)
						, new CampoValor("id_dat_glob_fk", datos.Id_dat_glob_fk.ToString())
						, new CampoValor("nro_horas_mes_calcula", datos.Nro_horas_mes_calcula.ToString())
						);
					MessageBox.Show("Se grabo [salarios] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					bd.EjecutarUpdate("salarios", filtro
						, new CampoValor("id_empleado_fk", datos.Id_empleado_fk.ToString())
						, new CampoValor("valor_salario", datos.Valor_salario.ToString())
						, new CampoValor("valor_por_salario", datos.Valor_por_salario.ToString())
						, new CampoValor("nro_horas_mes", datos.Nro_horas_mes.ToString())
						, new CampoValor("incluye_minutos", datos.Incluye_minutos)
						, new CampoValor("fecha_registro_salario",ValidarBuilder.FormatoFecha( datos.Fecha_registro_salario))
						, new CampoValor("estado_salario", datos.Estado_salario)
						, new CampoValor("id_dat_glob_fk", datos.Id_dat_glob_fk.ToString())
						, new CampoValor("nro_horas_mes_calcula", datos.Nro_horas_mes_calcula.ToString())
						);
					MessageBox.Show("Se actualizó [salarios] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
        public static void Actualiza_Estado_Sql(string filtro)
        {
            try
            {
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);

                bd.EjecutarUpdate("salarios", filtro
                    , new CampoValor("estado_salario", "NO VIGENTE")
                    );
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
		#endregion

		#region < METODOS PUBLICOS RECUPERACION >
		public static salarios Recuperar(string filtro)
		{
			salarios r = new salarios();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_salario = Convert.ToInt32(ds.Rows[0]["id_salario"]);
					r.Id_empleado_fk = Convert.ToInt32(ds.Rows[0]["id_empleado_fk"]);
					r.Valor_salario = Convert.ToDecimal(ds.Rows[0]["valor_salario"]);
					r.Valor_por_salario = Convert.ToDecimal(ds.Rows[0]["valor_por_salario"]);
					r.Nro_horas_mes = Convert.ToInt32(ds.Rows[0]["nro_horas_mes"]);
					if (ds.Rows[0]["incluye_minutos"] != System.DBNull.Value)
						r.Incluye_minutos = ds.Rows[0]["incluye_minutos"].ToString();
					if (ds.Rows[0]["incluye_minutos"] == System.DBNull.Value)
						r.Incluye_minutos = "";
					if (ds.Rows[0]["fecha_registro_salario"] != System.DBNull.Value)
						r.Fecha_registro_salario = Convert.ToDateTime(ds.Rows[0]["fecha_registro_salario"]);
					if (ds.Rows[0]["fecha_registro_salario"] == System.DBNull.Value)
						r.Fecha_registro_salario = DateTime.Now;
					if (ds.Rows[0]["estado_salario"] != System.DBNull.Value)
						r.Estado_salario = ds.Rows[0]["estado_salario"].ToString();
					if (ds.Rows[0]["estado_salario"] == System.DBNull.Value)
						r.Estado_salario = "";
					r.Id_dat_glob_fk = Convert.ToInt32(ds.Rows[0]["id_dat_glob_fk"]);
					r.Nro_horas_mes_calcula = Convert.ToInt32(ds.Rows[0]["nro_horas_mes_calcula"]);
					r.Datos_globales = datos_globalesBuilder.Recuperar("id_dat_glob=" + ds.Rows[0]["id_dat_glob_fk"]);
					r.Empleados = empleadosBuilder.Recuperar("id_emp=" + ds.Rows[0]["id_empleado_fk"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS BORRADO >
		public static void Borrar(string filtro)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				bd.EjecutarDelete("salarios", filtro);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static void BorrarTodos()
		{
			try
			{
				Borrar("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS EXTRAS >
		public static void Listar_Combobox(ComboBox cmbsalarios, string filtro, string nombre_display)
		{
			cmbsalarios.DataSource = ListarTodos(filtro);
			cmbsalarios.DisplayMember = nombre_display;
			cmbsalarios.ValueMember = "id_salario";
		}

		public static DataTable ListarTodos_Alias(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("id_salario AS id_salario,id_empleado_fk AS id_empleado_fk,valor_salario AS valor_salario,valor_por_salario AS valor_por_salario,nro_horas_mes AS nro_horas_mes,incluye_minutos AS incluye_minutos,fecha_registro_salario AS fecha_registro_salario,estado_salario AS estado_salario,id_dat_glob_fk AS id_dat_glob_fk,nro_horas_mes_calcula AS nro_horas_mes_calcula", "salarios", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static List<salarios> ListarTodos_List(string filtro)
		{
			List<salarios> r = new List<salarios>();
			try
			{
				DataTable dt = ListarTodos(filtro);
				for (int i = 0; i < dt.Rows.Count; i++)
					r.Add(Recuperar("id_salario="+dt.Rows[i]["id_salario"]));
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Datos_globales(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob";
				else
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "salarios, datos_globales","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Datos_globales_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "salarios.id_salario AS salarios.id_salario,salarios.id_empleado_fk AS salarios.id_empleado_fk,salarios.valor_salario AS salarios.valor_salario,salarios.valor_por_salario AS salarios.valor_por_salario,salarios.nro_horas_mes AS salarios.nro_horas_mes,salarios.incluye_minutos AS salarios.incluye_minutos,salarios.fecha_registro_salario AS salarios.fecha_registro_salario,salarios.estado_salario AS salarios.estado_salario,salarios.id_dat_glob_fk AS salarios.id_dat_glob_fk,salarios.nro_horas_mes_calcula AS salarios.nro_horas_mes_calcula," + 
							 "datos_globales.id_dat_glob AS datos_globales.id_dat_glob,datos_globales.porcent_extra AS datos_globales.porcent_extra,datos_globales.porcent_suplementaria AS datos_globales.porcent_suplementaria,datos_globales.porcent_nocturna AS datos_globales.porcent_nocturna,datos_globales.nro_horas_reglamentaria AS datos_globales.nro_horas_reglamentaria,datos_globales.nro_horas_suplementarias AS datos_globales.nro_horas_suplementarias,datos_globales.estado_dat_glob AS datos_globales.estado_dat_glob,datos_globales.fecha_registro_dat_glob AS datos_globales.fecha_registro_dat_glob,datos_globales.id_empr_fk AS datos_globales.id_empr_fk";
			try
			{
				if(filtro=="")
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob";
				else
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "salarios, datos_globales",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empleados(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "salarios.id_empleado_fk = empleados.id_emp";
				else
					joins_ = "salarios.id_empleado_fk = empleados.id_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "salarios, empleados","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empleados_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "salarios.id_salario AS salarios.id_salario,salarios.id_empleado_fk AS salarios.id_empleado_fk,salarios.valor_salario AS salarios.valor_salario,salarios.valor_por_salario AS salarios.valor_por_salario,salarios.nro_horas_mes AS salarios.nro_horas_mes,salarios.incluye_minutos AS salarios.incluye_minutos,salarios.fecha_registro_salario AS salarios.fecha_registro_salario,salarios.estado_salario AS salarios.estado_salario,salarios.id_dat_glob_fk AS salarios.id_dat_glob_fk,salarios.nro_horas_mes_calcula AS salarios.nro_horas_mes_calcula," + 
							 "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_controla_salida AS empleados.emp_controla_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial";
			try
			{
				if(filtro=="")
					joins_ = "salarios.id_empleado_fk = empleados.id_emp";
				else
					joins_ = "salarios.id_empleado_fk = empleados.id_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "salarios, empleados",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob AND salarios.id_empleado_fk = empleados.id_emp ";
				else
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob AND salarios.id_empleado_fk = empleados.id_emp AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "datos_globales,empleados,salarios","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "salarios.id_salario AS salarios.id_salario,salarios.id_empleado_fk AS salarios.id_empleado_fk,salarios.valor_salario AS salarios.valor_salario,salarios.valor_por_salario AS salarios.valor_por_salario,salarios.nro_horas_mes AS salarios.nro_horas_mes,salarios.incluye_minutos AS salarios.incluye_minutos,salarios.fecha_registro_salario AS salarios.fecha_registro_salario,salarios.estado_salario AS salarios.estado_salario,salarios.id_dat_glob_fk AS salarios.id_dat_glob_fk,salarios.nro_horas_mes_calcula AS salarios.nro_horas_mes_calcula," + 
							 "datos_globales.id_dat_glob AS datos_globales.id_dat_glob,datos_globales.porcent_extra AS datos_globales.porcent_extra,datos_globales.porcent_suplementaria AS datos_globales.porcent_suplementaria,datos_globales.porcent_nocturna AS datos_globales.porcent_nocturna,datos_globales.nro_horas_reglamentaria AS datos_globales.nro_horas_reglamentaria,datos_globales.nro_horas_suplementarias AS datos_globales.nro_horas_suplementarias,datos_globales.estado_dat_glob AS datos_globales.estado_dat_glob,datos_globales.fecha_registro_dat_glob AS datos_globales.fecha_registro_dat_glob,datos_globales.id_empr_fk AS datos_globales.id_empr_fk," + 
							 "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_controla_salida AS empleados.emp_controla_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial";
			try
			{
				if(filtro=="")
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob AND salarios.id_empleado_fk = empleados.id_emp ";
				else
					joins_ = "salarios.id_dat_glob_fk = datos_globales.id_dat_glob AND salarios.id_empleado_fk = empleados.id_emp AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "datos_globales,empleados,salarios",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		#endregion

		#region < METODOS PUBLICOS VALIDACION >
		public static salarios valida_campos_salarios(Control ctrl_id_salario,Control ctrl_id_empleado_fk,TextBox txt_valor_salario,TextBox txt_valor_por_salario,Control ctrl_nro_horas_mes,TextBox txt_incluye_minutos,DateTime dpk_fecha_registro_salario,TextBox txt_estado_salario,Control ctrl_id_dat_glob_fk,Control ctrl_nro_horas_mes_calcula)
		{
			bool r = true;
			salarios new_salarios = new salarios();
			try
			{
				if(ctrl_id_salario.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_salario = (TextBox)ctrl_id_salario;
					if (txt_id_salario.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_salario.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_salarios.Id_salario = Convert.ToInt32(txt_id_salario.Text);
				}
				if(ctrl_id_salario.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_salario = (ComboBox)ctrl_id_salario;
					if (cmb_id_salario.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_salarios.Id_salario = Convert.ToInt32(cmb_id_salario.SelectedValue);
				}
				if(ctrl_id_empleado_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_empleado_fk = (TextBox)ctrl_id_empleado_fk;
					if (txt_id_empleado_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empleado_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_empleado_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_empleado_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_salarios.Id_empleado_fk = Convert.ToInt32(txt_id_empleado_fk.Text);
				}
				if(ctrl_id_empleado_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_empleado_fk = (ComboBox)ctrl_id_empleado_fk;
					if (cmb_id_empleado_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empleado_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_salarios.Id_empleado_fk = Convert.ToInt32(cmb_id_empleado_fk.SelectedValue);
				}
				if (txt_valor_salario.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la valor_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				else
				{
					if (txt_valor_salario.Text.Equals("."))
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la valor_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToDecimal(txt_valor_salario.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la valor_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
				}
				if (r)
					new_salarios.Valor_salario = Convert.ToDecimal(txt_valor_salario.Text);
				if (txt_valor_por_salario.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la valor_por_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				else
				{
					if (txt_valor_por_salario.Text.Equals("."))
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la valor_por_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToDecimal(txt_valor_por_salario.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la valor_por_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
				}
				if (r)
					new_salarios.Valor_por_salario = Convert.ToDecimal(txt_valor_por_salario.Text);
				if(ctrl_nro_horas_mes.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_nro_horas_mes = (TextBox)ctrl_nro_horas_mes;
					if (txt_nro_horas_mes.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_mes","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_nro_horas_mes.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la nro_horas_mes","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_salarios.Nro_horas_mes = Convert.ToInt32(txt_nro_horas_mes.Text);
				}
				if(ctrl_nro_horas_mes.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_nro_horas_mes = (ComboBox)ctrl_nro_horas_mes;
					if (cmb_nro_horas_mes.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_mes","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_salarios.Nro_horas_mes = Convert.ToInt32(cmb_nro_horas_mes.SelectedValue);
				}
				if (txt_incluye_minutos.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la incluye_minutos","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_salarios.Incluye_minutos = txt_incluye_minutos.Text;
				if (r)
					new_salarios.Fecha_registro_salario = dpk_fecha_registro_salario;
				if (txt_estado_salario.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la estado_salario","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_salarios.Estado_salario = txt_estado_salario.Text;
				if(ctrl_id_dat_glob_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_dat_glob_fk = (TextBox)ctrl_id_dat_glob_fk;
					if (txt_id_dat_glob_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_dat_glob_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_dat_glob_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_dat_glob_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_salarios.Id_dat_glob_fk = Convert.ToInt32(txt_id_dat_glob_fk.Text);
				}
				if(ctrl_id_dat_glob_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_dat_glob_fk = (ComboBox)ctrl_id_dat_glob_fk;
					if (cmb_id_dat_glob_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_dat_glob_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_salarios.Id_dat_glob_fk = Convert.ToInt32(cmb_id_dat_glob_fk.SelectedValue);
				}
				if(ctrl_nro_horas_mes_calcula.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_nro_horas_mes_calcula = (TextBox)ctrl_nro_horas_mes_calcula;
					if (txt_nro_horas_mes_calcula.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_mes_calcula","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_nro_horas_mes_calcula.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la nro_horas_mes_calcula","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_salarios.Nro_horas_mes_calcula = Convert.ToInt32(txt_nro_horas_mes_calcula.Text);
				}
				if(ctrl_nro_horas_mes_calcula.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_nro_horas_mes_calcula = (ComboBox)ctrl_nro_horas_mes_calcula;
					if (cmb_nro_horas_mes_calcula.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la nro_horas_mes_calcula","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_salarios.Nro_horas_mes_calcula = Convert.ToInt32(cmb_nro_horas_mes_calcula.SelectedValue);
				}

				if(!r)
					new_salarios = null;
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return new_salarios;
		}

		public static void grabar_actualizar_registro(Control ctrl_id_salario,Control ctrl_id_empleado_fk,TextBox txt_valor_salario,TextBox txt_valor_por_salario,Control ctrl_nro_horas_mes,TextBox txt_incluye_minutos,DateTime dpk_fecha_registro_salario,TextBox txt_estado_salario,Control ctrl_id_dat_glob_fk,Control ctrl_nro_horas_mes_calcula)
		{
			try
			{
				salarios new_salarios =valida_campos_salarios(ctrl_id_salario,ctrl_id_empleado_fk,txt_valor_salario,txt_valor_por_salario,ctrl_nro_horas_mes,txt_incluye_minutos,dpk_fecha_registro_salario,txt_estado_salario,ctrl_id_dat_glob_fk,ctrl_nro_horas_mes_calcula); 
				if(new_salarios!=null)
					GrabarViaSql(new_salarios);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		public static bool grabar_actualizar_registro_personaliza(Control ctrl_id_salario,Control ctrl_id_empleado_fk,TextBox txt_valor_salario,TextBox txt_valor_por_salario,Control ctrl_nro_horas_mes,TextBox txt_incluye_minutos,DateTime dpk_fecha_registro_salario,TextBox txt_estado_salario,Control ctrl_id_dat_glob_fk,Control ctrl_nro_horas_mes_calcula)
		{
			bool r = false;
			try
			{
				salarios new_salarios =valida_campos_salarios(ctrl_id_salario,ctrl_id_empleado_fk,txt_valor_salario,txt_valor_por_salario,ctrl_nro_horas_mes,txt_incluye_minutos,dpk_fecha_registro_salario,txt_estado_salario,ctrl_id_dat_glob_fk,ctrl_nro_horas_mes_calcula); 
				if(new_salarios!=null)
				{
					r = true;
					GrabarViaSql(new_salarios);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		#endregion

	}
}
